import { login, getUserInfo, getMoreInfo } from '@/api/user'
import { setToken, getToken, removeToken } from '@/utils/auth'

// 保存token到本地vuex
const state = {
  // 默认是空的
  // token的字段
  token: getToken() || null,
  // 用户信息
  userInfo: null
}
const mutations = {
  setToken (state, payload) {
    state.token = payload.token
  },
  setUserInfo (state, payload) {
    state.userInfo = payload
  }
}
// 写数据接口->请求携带token请求拦截->在vuex写存数据写异步请求
const actions = {
  // 登录页面
  async loginAction (context, payload) {
    const token = await login(payload)
    // 本地缓存
    setToken(token)
    // vuex
    context.commit('setToken', { token })
  },
  // 获取用户信息
  async getUserInfoAction (context) {
    const res = await getUserInfo()
    // console.log('res:', res)
    const res2 = await getMoreInfo(res.userId)
    // console.log('res2:', res2)
    // 合并两次请求的数据
    context.commit('setUserInfo', { ...res, ...res2 })
  },
  logout (context) {
    // 删除vuex的token
    context.commit('setToken', { token: null })
    // 删除cookie token
    removeToken()
    // 删除userINfo中的空对象
    context.commit('setUserInfo', null)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
